#include "../libs/logc/log.h"
#include <stdlib.h>

// 自定义的回调函数，用于演示如何添加自定义日志处理
void custom_callback(log_Event *ev) {
	char buf[64];
	buf[strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ev->time)] = '\0';
	fprintf(ev->udata, "[CUSTOM] %s %-5s %s:%d: ",    buf,log_level_string(ev->level), ev->file, ev->line);
	vfprintf(ev->udata, ev->fmt, ev->ap);
	fprintf(ev->udata, "\n");
	fflush(ev->udata);
}

// gcc -I include -o log_demo ./src/main.c ./src/log.c
int main() {
	// 打开一个日志文件
	FILE *log_file = fopen("app.log", "a");
	if (!log_file) {
	       	perror("Failed to open log file");
		return EXIT_FAILURE;
	}

	// 设置日志级别为 DEBUG，这样所有 DEBUG 及以上级别的日志都会被记录
	log_set_level(LOG_DEBUG);

	// 添加一个回调函数，将日志输出到文件
	log_add_fp(log_file, LOG_DEBUG);

	// 添加一个自定义的回调函数
	log_add_callback(custom_callback, log_file, LOG_INFO);

	// 设置日志不静默（即输出到 stderr）
	log_set_quiet(false);

	// 记录不同级别的日志
	log_trace("This is a trace message.");
	log_debug("This is a debug message.");
	    log_info("This is an info message.");
	log_warn("This is a warning message.");
	log_error("This is an error message.");
	log_fatal("This is a fatal message.");

	// 关闭日志文件
	fclose(log_file);
	return EXIT_SUCCESS;
}
